package com.leo.platform.shop.service.procategory.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

import com.leo.platform.server.BaseServiceImpl;
import com.leo.platform.shop.dao.ProCategoryDao;
import com.leo.platform.shop.entity.procategory.ProCategory;
import com.leo.platform.shop.service.procategory.ProCategoryService;

/**
 * @author Administrator
 * @date 2019年6月27日
 */
public class ProCategoryServiceImpl extends BaseServiceImpl<ProCategory, Long> implements ProCategoryService {

    @Autowired
    @Qualifier("proCategoryDaoImpl")
    private ProCategoryDao proCategoryDao;

    @Override
    public void afterConstruct() {
        super.setBaseDao(proCategoryDao);
    }

    /**
     * 根据父节点id查询分类,也是要在proCategoryRef中通过entityCode查找categoryId，再通过CategoryId查找category
     * Dao层需要关联ProCategory和ProCategoryRef根据categoryId，然后根据entityCode查找出所有的数据行， 查找出ProCategory返回
     */
    @Override
    public List<ProCategory> queryCategoryByPid(Long categoryId) {

        return proCategoryDao.queryCategoryByPid(categoryId);
    }

    /**
     * 根据品牌id查询分类
     */
    @Override
    public List<ProCategory> queryByBrandId(Long bid) {
        return proCategoryDao.queryByBrandId(bid);
    }

    @Override
    public void saveCategory(ProCategory category) {
        /**
         * 将本节点插入到数据库中 将此category的父节点的isParent设为true
         */

    }

    /**
     * 更新
     * 
     * @param category
     */
    @Override
    public void updateCategory(ProCategory category) {

    }

    @Override
    public void deleteCategory(Long id) {
        /**
         * 先根据id查询要删除的对象，然后进行判断
         * <p/>
         * 如果是父节点，那么删除所有附带子节点,然后维护中间表
         * <p/>
         * 如果是子节点，那么只删除自己, 然后判断父节点孩子的个数，
         * <p/>
         * 如果孩子不为0，则不做修改；
         * <p/>
         * 如果孩子个数为0，则修改父节点isParent 的值为false,最后维护中间表
         * <p/>
         * 此处中间表指procategoryref,proattrvalnmref
         */

    }

    /**
     * 根据ids查询名字
     * 
     * @param asList
     * @return
     */
    @Override
    public List<String> queryNameByIds(List<Long> asList) {
        return null;
    }

    /**
     * 查询数据库中最后一条数据
     */
    @Override
    public List<ProCategory> queryLast() {

        return null;
    }

    /**
     * 根据分类id集合查询分类信息
     */
    @Override
    public List<ProCategory> queryCategoryByIds(List<Long> ids) {
        return null;
    }

    /**
     * 根据cid3查询其所有层级分类
     */
    @Override
    public List<ProCategory> queryAllCategoryLevelByCid3(Long id) {

        return null;
    }

    /**
     * 查询本节点下所包含的所有叶子节点，用于维护tb_category_brand中间表
     */
    private void queryAllLeafNode(ProCategory category, List<ProCategory> leafNode) {

    }

    /**
     * 查询本节点下所有子节点
     */
    private void queryAllNode(ProCategory category, List<ProCategory> node) {

    }
}
